package com.cskaoyan.javase.oop2.encapsulate._1extends._10final._3variable._1local;

/**
 * final修饰局部变量,表示局部常量,除此之外,一切照旧.
 * 局部变量可用的修饰符几乎没有,final就是其中可用的之一.
 *
 * 以方法中的局部变量为例,方法中的局部位置有两个:
 *      1.方法体内部
 *      2.形参列表中
 *
 * 语法:
 *    方法体中:  final 数据类型 局部变量名 = 取值;
 *          表示在该行初始化局部常量以后,值不可变.
 *
 *    形参列表中: final 数据类型 形参名
 *          表示对应实参传入方法后,取值不可变,是常量.
 *
 *
 * @since 09:52
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        final int a = 10;
        System.out.println(a);
        System.out.println(a + 1);
        // System.out.println(a++);

        test(100);
        int num = 200;
        test(num);

        // final修饰引用数据类型,表示引用不能指向新的对象,但是对象的状态仍然可以改变
        final Student s = new Student(18);
        // s = new Student(10);
        s.age = 28;
        System.out.println(s.age);
    }

    public static void test(final int num) {
        System.out.println(num);
        System.out.println(num + 1);
        // System.out.println(num++);
    }
}

class Student {
    int age = 10;

    public Student(int age) {
        this.age = age;
    }
}